草庐IT

c++ - XML Schema 到 C++ 类

全部标签

c++ - C/C++ 中的非线程安全文件 I/O

在解决我们应用程序中的一些性能问题时,我发现C的stdio.h函数(至少对于我们的供应商而言,C++的fstream类)是线程安全的.结果,每次我做像fgetc这样简单的事情时,RTL都必须获取一个锁,读取一个字节,然后释放锁。这对性能不利。在C和C++中获得非线程安全文件I/O的最佳方法是什么,以便我可以自行管理锁定并获得更好的性能?MSVC提供_fputc_nolock,GCC提供unlocked_stdio和flockfile,但我在我的编译器(CodeGearC++Builder)中找不到任何类似的函数。我可以使用原始WindowsAPI,但它不可移植,而且我认为对于一次一个字

c++ - 为什么 Direct3D 没有自己的顶点结构?

我一直想知道为什么我们必须始终定义D3DVERTEX背后的原因。是因为微软想允许有机会把它放在一个类中并重载运算符,还是有其他原因?谢谢 最佳答案 这样您就可以使用对您的应用程序方便的任何内容。如果你需要法线作为顶点的一部分,你可以拥有它。如果不需要法线,则每个顶点可节省12个字节。如果您需要颜色信息、纹理坐标、高光参数等,您可以根据您的具体需要选择是否定义它们。如果Microsoft提供“D3DVERTEX”结构,您要么拥有500个不同的版本,具有不同的字段组合,要么您拥有一个包含所有可能值的巨大版本,这会占用您的带宽。

c++ - 如何获取具有 FILE* 的文件名?

在我的类中,我有FILE*ascii_file;数据成员,它总是通过类构造函数初始化。如何获得asci_file的完整路径?我不想存储有关文件的更多信息,expectascii_file,并希望它在windows、linux和solaris上工作。 最佳答案 此任务将需要不可移植的代码。在Windows上,您可以使用_fileno将FILE*转换为CRT文件描述符,然后使用_get_osfhandle转换为操作系统句柄.然后就可以得到如图所示的文件名here(使用文件映射)。ObtainingaFileNameFromaFileHa

c++ - 在 C : Derived to base conversions 中包装 C++

我正在将一个简单的C++继承层次结构包装到“面向对象的”C中。我试图弄清楚在将指向C++对象的指针视为指向不透明C结构的指针时是否存在任何问题。特别是在什么情况下派生到基的转换会出现问题?类本身比较复杂,但层级较浅,仅采用单继承://AbaseclasswithlotsofimportantsharedfunctionalityclassBase{public:virtualvoidsomeOperation();//Moreoperations...private://Data...};//OneofseveralderivedclassesclassFirstDerived:pub

c++ - 如何在 C++ 绑定(bind)中使用不透明指针包装 C 库

我正在考虑用C++包装一些C库,但我不确定包装不透明指针的最佳方法是什么。当C语言结构是公共(public)API的一部分时typedefstruct_SomeType{inta;intb;}SomeType_t;有几个“成员”函数的地方:voidSomeTypeFoo(SomeType_t*obj,...);voidSomeTypeBar(SomeType_t*obj,...);我喜欢从基派生的方法,将这些“成员”函数简单地关联为实际的类成员。即:classSomeTypeWrapper:publicSomeType_t{voidfoo(...);voidbar(...);};就我的

c++ - 按位操作函数

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Howdoyouset,clearandtoggleasinglebitinC?我正在为即将到来的期末考试学习,我想验证学习指南中的一些问题。一些上下文:Set()函数将字节中的一位设置为1Unset()函数将字节中的某个位设置为0Flip()函数将位“翻转”到与原来相反的位置所以我们类的某个child主动回答了学习指南的问题,但我已经发现了一些错误,这些答案听起来很可疑。他是这样说的:WhichoperationisusedfortheSet?theoroperator|Whichoperationisus

java - 从 JNI 代码检查 Java 类中是否存在可选字段或方法

我有一个Java类,可以对其进行子类化以添加额外的字段。有一个相应的C++JNI方法将与该字段交互。但是,我希望JNI代码同时处理基类和子类,这意味着它必须检测该字段是否存在。我的(简化的)JNI代码如下所示:fid=j.GetFieldID(jc,UTF8_SECPARM,SIG_SECPARM);if(fid==0)return;...continuewithfid...虽然GetFieldID()方法返回NULL,但应用程序在处理的某个进一步点出现异常,这似乎与此代码无关。然而,它在某种程度上是相关的,因为如果我只是在GetFieldID()方法之前返回,则没有异常(except

C# 和 C++ 库

我想知道我是否可以使用alibrary-用C++编写-在C#问题是图书馆有自己的结构和类..我可以在C#中使用它吗?谢谢编辑这个库是开源的..所以如果我的要求需要一些特殊的C++代码,我将能够做到... 最佳答案 您不能在托管代码中直接使用C++类。主要问题是无法使用与C++代码相同的内存分配器,并且无法轻松调用构造函数和析构函数。一位微软员工发布了ablogpost以表明这并非不可能。我不建议这样做。COM是一种解决方案,但总是需要相当大的重写和良好的COM编程技能。managedclasswrapper在C++/CLI语言中通常

c++ - 允许我的 C++ 库与 C 一起工作(减少函数集)

我一直想构建一个共享库,其中将利用类来保持其功能清洁(它可能需要很多输入或处理),尽管我仍然希望以C平台为目标。如果我在我的所有原型(prototype)上应用extern"C"{},并在示例中提供一组公开的函数来模仿类函数,这样对象就不需要“需要”来使用我的库,那些正常的函数会在将链接到它的C程序? 最佳答案 如果您按照您描述的方式创建一个dll,也就是说,所有接口(interface)都是extern"C"并且接口(interface)中的所有类型都是POD,那么是的,您在C或.NET中使用它几乎没有问题例子:classMyCl

c# - C# 中的 C/C++ 代码编译器

在C#中,我可以使用下面的代码编译VB和C#代码,但我无法编译C/C++代码。有什么办法吗?C#编译器:publicvoidCompile(stringToCompile){stringResult=null;stringerrors=null;Microsoft.CSharp.CSharpCodeProvidercodeProvider=newMicrosoft.CSharp.CSharpCodeProvider();System.CodeDom.Compiler.ICodeCompilericc=codeProvider.CreateCompiler();stringOutput=